﻿using MKAdminCore.DTO.Web.BasicSetting;
using MKAdminCore.DTO.Web.Common;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace MKAdminCore.IService.Web.BasicSetting
{
    public interface IUserInfoService
    {
        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="parameter"></param>
        /// <returns></returns>
        PagingList<GetUserInfo> List(GetUserInfoListParameter parameter);

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        Task<HttpResponseResult> Add(UserInfoAdd parameter, UserInfo userInfo);

        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        Task<HttpResponseResult> Edit(UserInfoEdit parameter);

        /// <summary>
        /// 重置密码
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        Task<HttpResponseResult> ResetPwd(UserInfoResetPassword parameter);

        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        Task<HttpResponseResult> Del(UserInfoDel parameter);

        /// <summary>
        /// 启用/禁用
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        Task<HttpResponseResult> UpdateStatus(UserInfoUpdateStatus parameter);

        /// <summary>
        /// 获取用户角色
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        Task<HttpResponseResult> GetRoleInfo(UserInfoGetRoleInfo parameter);

        /// <summary>
        /// 分配角色
        /// </summary>
        /// <param name="parameter"></param>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        Task<HttpResponseResult> AllotRole(AllotRoleInfo parameter);
    }
}
